<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        1.变量声明提升
            *通过var定义(声明)的变量,在定义语句之前就可以访问到
            *值: undefined
        2.函数声明提升
            *通过function声明的函数,在之前就可以直接调用
            *值:函数定义(对象)
        3.问题:变量提升和函数提升是如何产生的?
     -->
     <script>
        // 面试题： a输出多少
        var a = 3
        function fn(){
            console.log(a);
            var a = 4
        }
        fn()   //undefined

        console.log(b);   //undefined   变量提升
        var b = 5

        fn2()       //fn2()  可以调用  函数提升
        function fn2() {
            console.log('fn2()');
        }
        
        // fn3()     // 不能调用  变量提升
        var fn3 = function(){
            console.log('fn3()');
        }
     </script>
</body>
</html>